<?php defined('SYSPATH') or die('No direct script access.');

abstract class Controller_Acommon extends Controller_Template {

    public $offset;
    public $_config;

	public function before() {
        parent::before();
        $this->_config = Kohana::$config->load('administration');
        View::set_global('title', 'Туры - админ панель');

        if (!Cookie::get('admin', null)) { // если нет сессии с админом то редиректим на страницу логина
        	$this->request->redirect('administration/aauth');
            die();
        }

        View::set_global('frontAdmin', ORM::factory('aadmin', array(
            'id' => Cookie::get('admin', null)
        )));

        $this->template->cur_date = date('d').' '.$this->parseMonth(date('m')).' '.date('Y');
        $this->template->admin_fio = $this->template->frontAdmin->fio;
        $this->template->leftmenu = View::factory('apieces/leftmenu', array(
            'leftmenu' => $this->_config->get('leftmenu')
        ));
	}

    public function params() {
        return array();
    }

    public static function parseMonth($month) {
        switch($month) {
            case 1: $ret='января'; break;
            case 2: $ret='февраля'; break;
            case 3: $ret='марта'; break;
            case 4: $ret='апреля'; break;
            case 5: $ret='мая'; break;
            case 6: $ret='июня'; break;
            case 7: $ret='июля'; break;
            case 8: $ret='августа'; break;
            case 9: $ret='сентября'; break;
            case 10: $ret='октября'; break;
            case 11: $ret='ноября'; break;
            case 12: $ret='декабря'; break;
        }

        return $ret;
    }

    public function uploadImage($name, $oldFileName) {
        if (!empty($_FILES[$name]['tmp_name'])) {
            // Получение параметров для файла
            $imageParams = arr::path($this->params(), 'fields.'.$name.'.image_params');
            $path = $imageParams['dir'];
            $ext = /*substr(strrchr($_FILES[$name]['name'], '.'), 1);*/ pathinfo($_FILES[$name]['name'], PATHINFO_EXTENSION);
            $hash = md5_file($_FILES[$name]['tmp_name']);

            if (!empty($oldFileName)) {
                $fileName = $oldFileName;
            } else {
                $fileName = $hash.'.'.$ext;
            }

            // Сохранение файла
            //echo $path.'123'; die();
            $fullName = Upload::save($_FILES[$name], $fileName, $path);

            // Ресайз изображения с помощью класса Image
            Image::factory($fullName)
                //->resize($imageParams['width'], $imageParams['height'], $imageParams['resize_type'])
                ->crop($imageParams['width'], $imageParams['height'])
                ->save();

            return $fileName;
        } else {
            return $oldFileName;
        }
    }

    public function showDefaultList() {
        $currentPage = $this->request->param('page');

        if ($this->request->param('page') == 1 || empty($currentPage)) {
            $this->offset = 0;
        }
        else {
            $this->offset = $this->request->param('page')*$this->_config->get('itemsPerPage')-$this->_config->get('itemsPerPage');
        }

        $this->template->right = View::factory('apages/amain', array(
            'title' => 'Меню',
            'content' => View::factory('apieces/acontentList', array(
                'controller' => $this->request->controller(),
                'page' => $this->request->param('page'),
                'data' => ORM::factory($this->request->controller())->order_by('id', 'DESC')->limit($this->_config->get('itemsPerPage'))->offset($this->offset)->find_all(),
                'waymark' => arr::get($this->params(), 'waymark')
            ))
        ));
    }

    public function showPagination() {
        $this->template->right .= View::factory('apieces/apagination', array(
            'pagination' => Pagination::factory(array(
                'total_items' => ORM::factory($this->request->controller())->count_all(),
                'items_per_page' => $this->_config->get('itemsPerPage'),
            ))
        ));
    }

    public function showDefaultForm($params, $obj, $action = 'add') { // массив с настройками для полей формы, объект для значений по умолчанию, action для формы
        if ($action == 'add') { // генерим ссылку для отправки формы
            $actionLink = '/administration/'.$this->request->controller().'/'.$this->request->param('page').'/add';
        } else {
            $actionLink = '/administration/'.$this->request->controller().'/'.$this->request->param('page').'/edit/'.$this->request->param('id').'/save';
        }

        $this->template->right .= View::factory('aforms/adefaultForm', array(
            'actionLink' => $actionLink,
            'params' => $params,
            'obj' => $obj
        ));
    }
}